{$CLEO}
{
    III Aircraft 1.0 additional CLEO script
    This scripts adds spawned helicopters and planes throughout the map and locks Unique Stunt Jumps
    & Insane Stunts when in any aircraft
    It also features a small warper script so you can access Torrington Police Station rooftop

    Created by Silent
}
CONST       // Native constants required to compile this source
	OFF				= 0
	ON				= 1
END
VAR
    0@          : Int   // In aircraft flag
    1@          : Int   // Temporary variable

    2@          : Int   // Biplane handle/spawn flag
    3@          : Int   // Dodo #1 handle/spawn flag
    4@          : Int   // Dodo #2 handle/spawn flag
    5@          : Int   // Maverick #1 handle/spawn flag
    6@          : Int   // Armadillo #1 handle/spawn flag
    7@          : Int   // Maverick #2 handle/spawn flag
    8@          : Int   // Police Maverick handle/spawn flag
    9@          : Int   // Hunter handle/spawn flag
    10@         : Int   // Skimmer handle/spawn flag
    11@         : Int   // Salvatore's Armadillo handle/spawn flag
    12@         : Int   // LC News Maverick handle/spawn flag
END
0000: AIRCRAFT

WHILE TRUE
    WAIT 250

    // USJ/HJ lock
    IF OR
        IS_PLAYER_IN_MODEL 0 #MAVERICK
        IS_PLAYER_IN_MODEL 0 #POLMAV
        IS_PLAYER_IN_MODEL 0 #LCNMAV
        IS_PLAYER_IN_MODEL 0 #HUNTER
        IS_PLAYER_IN_MODEL 0 #HUEY

        IS_PLAYER_IN_MODEL 0 #DODOB
        IS_PLAYER_IN_MODEL 0 #SKIMMER
        IS_PLAYER_IN_MODEL 0 #BIPLANE
    THEN
        IF 0@ == FALSE
        THEN
            0@ = TRUE

            // Pause the scripts
            GET_SCRIPT_STRUCT_NAMED 'HJ' 1@
            IF NOT 1@ == 0
            THEN
                1@ += 0x7C      // CRunningScript.WakeTime
                WRITE_MEMORY 1@ 4 0x7FFFFFFF OFF
            END

            GET_SCRIPT_STRUCT_NAMED 'USJ' 1@
            IF NOT 1@ == 0
            THEN
                1@ += 0x7C      // CRunningScript.WakeTime
                WRITE_MEMORY 1@ 4 0x7FFFFFFF OFF
            END
        END
    ELSE
        IF 0@ == TRUE
        THEN
            0@ = FALSE

            // Unpause the scripts
            GET_SCRIPT_STRUCT_NAMED 'HJ' 1@
            IF NOT 1@ == 0
            THEN
                1@ += 0x7C      // CRunningScript.WakeTime
                WRITE_MEMORY 1@ 4 0 OFF
            END

            GET_SCRIPT_STRUCT_NAMED 'USJ' 1@
            IF NOT 1@ == 0
            THEN
                1@ += 0x7C      // CRunningScript.WakeTime
                WRITE_MEMORY 1@ 4 0 OFF
            END
        END
    END

    // 'Safe' spawner
    IF LOCATE_PLAYER_ANY_MEANS_2D 0 -869.8 -750.8 150.0 150.0 OFF
    THEN
        IF 2@ == 0
        THEN
            REQUEST_MODEL #BIPLANE

            WHILE NOT HAS_MODEL_LOADED #BIPLANE
                WAIT 0
            END

            CREATE_CAR #BIPLANE -869.8 -750.8 11.2 2@
            SET_CAR_HEADING 2@ 199.3

            MARK_MODEL_AS_NO_lONGER_NEEDED #BIPLANE
        END
    ELSE
        IF NOT 2@ == 0
        THEN
            MARK_CAR_AS_NO_LONGER_NEEDED 2@
            2@ = 0
        END
    END

    IF LOCATE_PLAYER_ANY_MEANS_2D 0 -1121.5 -795.0 175.0 175.0 OFF
    THEN
        IF 3@ == 0
        THEN
            REQUEST_MODEL #DODOB

            WHILE NOT HAS_MODEL_LOADED #DODOB
                WAIT 0
            END

            CREATE_CAR #DODOB -1144.9 -793.0 11.6 3@
            SET_CAR_HEADING 3@ 181.3

            CREATE_CAR #DODOB -1099.0 -797.6 11.6 4@
            SET_CAR_HEADING 4@ 158.3

            MARK_MODEL_AS_NO_lONGER_NEEDED #DODOB
        END
    ELSE
        IF NOT 3@ == 0
        THEN
            MARK_CAR_AS_NO_LONGER_NEEDED 3@
            MARK_CAR_AS_NO_LONGER_NEEDED 4@
            3@ = 0
            4@ = 0
        END
    END

    IF LOCATE_PLAYER_ANY_MEANS_2D 0 -1247.2 -794.3 175.0 175.0 OFF
    THEN
        IF 5@ == 0
        THEN
            REQUEST_MODEL #MAVERICK
            REQUEST_MODEL #HUEY

            WHILE TRUE
                IF OR
                    NOT HAS_MODEL_LOADED #MAVERICK
                    NOT HAS_MODEL_LOADED #HUEY
                ELSE_GOTO BREAK
                WAIT 0
            END

            CREATE_CAR #MAVERICK -1238.3 -806.9 11.0 5@
            SET_CAR_HEADING 5@ 141.9

            CREATE_CAR #HUEY -1252.5 -784.0 11.2 6@
            SET_CAR_HEADING 6@ 137.18

            MARK_MODEL_AS_NO_lONGER_NEEDED #MAVERICK
            MARK_MODEL_AS_NO_lONGER_NEEDED #HUEY
        END
    ELSE
        IF NOT 5@ == 0
        THEN
            MARK_CAR_AS_NO_LONGER_NEEDED 5@
            MARK_CAR_AS_NO_LONGER_NEEDED 6@
            5@ = 0
            6@ = 0
        END
    END

    IF LOCATE_PLAYER_ANY_MEANS_2D 0 -1520.1 -898.3 150.0 150.0 OFF
    THEN
        IF 7@ == 0
        THEN
            REQUEST_MODEL #MAVERICK

            WHILE NOT HAS_MODEL_LOADED #MAVERICK
                WAIT 0
            END

            CREATE_CAR #MAVERICK -1520.1 -898.3 11.0 7@
            SET_CAR_HEADING 7@ 271.3

            MARK_MODEL_AS_NO_lONGER_NEEDED #MAVERICK
        END
    ELSE
        IF NOT 7@ == 0
        THEN
            MARK_CAR_AS_NO_LONGER_NEEDED 7@
            7@ = 0
        END
    END

    IF LOCATE_PLAYER_ANY_MEANS_2D 0 340.9 -1106.1 150.0 150.0 OFF
    THEN
        IF 8@ == 0
        THEN
            REQUEST_MODEL #POLMAV

            WHILE NOT HAS_MODEL_LOADED #POLMAV
                WAIT 0
            END

            CREATE_CAR #POLMAV 340.9 -1106.1 76.9 8@
            SET_CAR_HEADING 8@ 178.6

            MARK_MODEL_AS_NO_lONGER_NEEDED #POLMAV
        END
    ELSE
        IF NOT 8@ == 0
        THEN
            MARK_CAR_AS_NO_LONGER_NEEDED 8@
            8@ = 0
        END
    END

    IF LOCATE_PLAYER_ANY_MEANS_2D 0 150.9 229.8 150.0 150.0 OFF
    THEN
        IF 9@ == 0
        THEN
            REQUEST_MODEL #HUNTER

            WHILE NOT HAS_MODEL_LOADED #HUNTER
                WAIT 0
            END

            CREATE_CAR #HUNTER 150.9 229.8 11.4 9@
            SET_CAR_HEADING 9@ 180.0

            MARK_MODEL_AS_NO_lONGER_NEEDED #HUNTER
        END
    ELSE
        IF NOT 9@ == 0
        THEN
            MARK_CAR_AS_NO_LONGER_NEEDED 9@
            9@ = 0
        END
    END

    IF LOCATE_PLAYER_ANY_MEANS_2D 0 1579.0 -119.8 150.0 150.0 OFF
    THEN
        IF 10@ == 0
        THEN
            REQUEST_MODEL #SKIMMER

            WHILE NOT HAS_MODEL_LOADED #SKIMMER
                WAIT 0
            END

            CREATE_CAR #SKIMMER 1579.0 -119.8 1.1 10@
            SET_CAR_HEADING 10@ 175.0

            MARK_MODEL_AS_NO_lONGER_NEEDED #SKIMMER
        END
    ELSE
        IF NOT 10@ == 0
        THEN
            MARK_CAR_AS_NO_LONGER_NEEDED 10@
            10@ = 0
        END
    END

    IF LOCATE_PLAYER_ANY_MEANS_2D 0 1530.5 -198.0 150.0 150.0 OFF
    THEN
        IF 11@ == 0
        THEN
            REQUEST_MODEL #HUEY

            WHILE NOT HAS_MODEL_LOADED #HUEY
                WAIT 0
            END

            CREATE_CAR #HUEY 1530.5 -198.0 57.0 11@
            SET_CAR_HEADING 11@ 258.7
            CHANGE_CAR_COLOUR 11@ 1 0

            MARK_MODEL_AS_NO_lONGER_NEEDED #HUEY
        END
    ELSE
        IF NOT 11@ == 0
        THEN
            MARK_CAR_AS_NO_LONGER_NEEDED 11@
            11@ = 0
        END
    END

    IF LOCATE_PLAYER_ANY_MEANS_2D 0 -78.9 -1271.2 150.0 150.0 OFF
    THEN
        IF 12@ == 0
        THEN
            REQUEST_MODEL #LCNMAV

            WHILE NOT HAS_MODEL_LOADED #LCNMAV
                WAIT 0
            END

            CREATE_CAR #LCNMAV -78.9 -1271.2 43.4 12@
            SET_CAR_HEADING 12@ 176.6

            MARK_MODEL_AS_NO_lONGER_NEEDED #LCNMAV
        END
    ELSE
        IF NOT 12@ == 0
        THEN
            MARK_CAR_AS_NO_LONGER_NEEDED 12@
            12@ = 0
        END
    END

    // Warper
    IF LOCATE_PLAYER_ON_FOOT_3D 0 2.39 -1320.3 29.0 1.5 1.5 3.0 OFF
    THEN
        GOSUB @AIRCRAFT__FADEOUT
        CLEAR_AREA -73.5 -1297.4 43.5 1.5 0
        SET_PLAYER_COORDINATES 0 -73.5 -1297.4 43.5
        SET_PLAYER_HEADING 0 14.7
        GOSUB @AIRCRAFT__FADEIN
    END

    IF LOCATE_PLAYER_ON_FOOT_3D 0 340.4 -1118.8 25.9 1.5 1.5 3.0 OFF
    THEN
        GOSUB @AIRCRAFT__FADEOUT
        CLEAR_AREA -73.5 -1297.4 43.5 1.5 0
        SET_PLAYER_COORDINATES 0 348.1 -1105.4 76.9
        SET_PLAYER_HEADING 0 94.3
        GOSUB @AIRCRAFT__FADEIN
    END

    IF LOCATE_PLAYER_ON_FOOT_3D 0 350.6 -1106.5 76.9 1.5 1.5 3.0 OFF
    THEN
        GOSUB @AIRCRAFT__FADEOUT
        CLEAR_AREA -73.5 -1297.4 43.5 1.5 0
        SET_PLAYER_COORDINATES 0 340.6 -1121.2 25.9
        SET_PLAYER_HEADING 0 177.0
        GOSUB @AIRCRAFT__FADEIN
    END
END


:AIRCRAFT__FADEOUT
SET_FADING_COLOUR 1 1 1
DO_FADE 500 OFF

WHILE GET_FADING_STATUS
    WAIT 0
END

SET_PLAYER_CONTROL 0 OFF
RETURN


:AIRCRAFT__FADEIN
SET_CAMERA_BEHIND_PLAYER
WAIT 500
SET_PLAYER_CONTROL 0 ON
SET_FADING_COLOUR 1 1 1
DO_FADE 500 ON

WHILE GET_FADING_STATUS
    WAIT 0
END

RETURN